home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / Speech.p < prev    next >
Text File  |  1996-05-01  |  11KB  |  397 lines

  1. {
  2.      File:        Speech.p
  3.  
  4.      Contains:    Speech Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Speech;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __SPEECH__}
  28. {$SETC __SPEECH__ := 1}
  29.  
  30. {$I+}
  31. {$SETC SpeechIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __MEMORY__}
  38. {$I Memory.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __FILES__}
  41. {$I Files.p}
  42. {$ENDC}
  43.  
  44. {$PUSH}
  45. {$ALIGN MAC68K}
  46. {$LibExport+}
  47.  
  48. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  49.  
  50. CONST
  51.     kTextToSpeechSynthType        = 'ttsc';
  52.     kTextToSpeechVoiceType        = 'ttvd';
  53.     kTextToSpeechVoiceFileType    = 'ttvf';
  54.     kTextToSpeechVoiceBundleType = 'ttvb';
  55.  
  56.     kNoEndingProsody            = 1;
  57.     kNoSpeechInterrupt            = 2;
  58.     kPreflightThenPause            = 4;
  59.  
  60.     kImmediate                    = 0;
  61.     kEndOfWord                    = 1;
  62.     kEndOfSentence                = 2;
  63.  
  64. { ------------------------------------------ }
  65. {  GetSpeechInfo & SetSpeechInfo selectors     }
  66. { ------------------------------------------ }
  67.     soStatus                    = 'stat';
  68.     soErrors                    = 'erro';
  69.     soInputMode                    = 'inpt';
  70.     soCharacterMode                = 'char';
  71.     soNumberMode                = 'nmbr';
  72.     soRate                        = 'rate';
  73.     soPitchBase                    = 'pbas';
  74.     soPitchMod                    = 'pmod';
  75.     soVolume                    = 'volm';
  76.     soSynthType                    = 'vers';
  77.     soRecentSync                = 'sync';
  78.     soPhonemeSymbols            = 'phsy';
  79.     soCurrentVoice                = 'cvox';
  80.     soCommandDelimiter            = 'dlim';
  81.     soReset                        = 'rset';
  82.     soCurrentA5                    = 'myA5';
  83.     soRefCon                    = 'refc';
  84.     soTextDoneCallBack            = 'tdcb';
  85.     soSpeechDoneCallBack        = 'sdcb';
  86.     soSyncCallBack                = 'sycb';
  87.     soErrorCallBack                = 'ercb';
  88.     soPhonemeCallBack            = 'phcb';
  89.     soWordCallBack                = 'wdcb';
  90.     soSynthExtension            = 'xtnd';
  91.     soSoundOutput                = 'sndo';
  92.  
  93. { ------------------------------------------ }
  94. {  Speaking Mode Constants                      }
  95. { ------------------------------------------ }
  96.     modeText                    = 'TEXT';                        {  input mode constants                      }
  97.     modePhonemes                = 'PHON';
  98.     modeNormal                    = 'NORM';                        {  character mode and number mode constants  }
  99.     modeLiteral                    = 'LTRL';
  100.  
  101.     soVoiceDescription            = 'info';
  102.     soVoiceFile                    = 'fref';
  103.  
  104.  
  105. TYPE
  106.     SpeechChannelRecordPtr = ^SpeechChannelRecord;
  107.     SpeechChannelRecord = RECORD
  108.         data:                    ARRAY [0..0] OF LONGINT;
  109.     END;
  110.  
  111.     SpeechChannel                        = ^SpeechChannelRecord;
  112.     VoiceSpecPtr = ^VoiceSpec;
  113.     VoiceSpec = RECORD
  114.         creator:                OSType;
  115.         id:                        OSType;
  116.     END;
  117.  
  118.  
  119. CONST
  120.     kNeuter                        = 0;
  121.     kMale                        = 1;
  122.     kFemale                        = 2;
  123.  
  124.  
  125. TYPE
  126.     VoiceDescriptionPtr = ^VoiceDescription;
  127.     VoiceDescription = RECORD
  128.         length:                    LONGINT;
  129.         voice:                    VoiceSpec;
  130.         version:                LONGINT;
  131.         name:                    Str63;
  132.         comment:                Str255;
  133.         gender:                    INTEGER;
  134.         age:                    INTEGER;
  135.         script:                    INTEGER;
  136.         language:                INTEGER;
  137.         region:                    INTEGER;
  138.         reserved:                ARRAY [0..3] OF LONGINT;
  139.     END;
  140.  
  141.     VoiceFileInfoPtr = ^VoiceFileInfo;
  142.     VoiceFileInfo = RECORD
  143.         fileSpec:                FSSpec;
  144.         resID:                    INTEGER;
  145.     END;
  146.  
  147.     SpeechStatusInfoPtr = ^SpeechStatusInfo;
  148.     SpeechStatusInfo = RECORD
  149.         outputBusy:                BOOLEAN;
  150.         outputPaused:            BOOLEAN;
  151.         inputBytesLeft:            LONGINT;
  152.         phonemeCode:            INTEGER;
  153.     END;
  154.  
  155.     SpeechErrorInfoPtr = ^SpeechErrorInfo;
  156.     SpeechErrorInfo = RECORD
  157.         count:                    INTEGER;
  158.         oldest:                    OSErr;
  159.         oldPos:                    LONGINT;
  160.         newest:                    OSErr;
  161.         newPos:                    LONGINT;
  162.     END;
  163.  
  164.     SpeechVersionInfoPtr = ^SpeechVersionInfo;
  165.     SpeechVersionInfo = RECORD
  166.         synthType:                OSType;
  167.         synthSubType:            OSType;
  168.         synthManufacturer:        OSType;
  169.         synthFlags:                LONGINT;
  170.         synthVersion:            NumVersion;
  171.     END;
  172.  
  173.     PhonemeInfoPtr = ^PhonemeInfo;
  174.     PhonemeInfo = RECORD
  175.         opcode:                    INTEGER;
  176.         phStr:                    Str15;
  177.         exampleStr:                Str31;
  178.         hiliteStart:            INTEGER;
  179.         hiliteEnd:                INTEGER;
  180.     END;
  181.  
  182.     PhonemeDescriptorPtr = ^PhonemeDescriptor;
  183.     PhonemeDescriptor = RECORD
  184.         phonemeCount:            INTEGER;
  185.         thePhonemes:            ARRAY [0..0] OF PhonemeInfo;
  186.     END;
  187.  
  188.     SpeechXtndDataPtr = ^SpeechXtndData;
  189.     SpeechXtndData = PACKED RECORD
  190.         synthCreator:            OSType;
  191.         synthData:                PACKED ARRAY [0..1] OF Byte;
  192.     END;
  193.  
  194.     DelimiterInfoPtr = ^DelimiterInfo;
  195.     DelimiterInfo = PACKED RECORD
  196.         startDelimiter:            PACKED ARRAY [0..1] OF Byte;
  197.         endDelimiter:            PACKED ARRAY [0..1] OF Byte;
  198.     END;
  199.  
  200.     SpeechTextDoneProcPtr = ProcPtr;  { PROCEDURE SpeechTextDone(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT); }
  201.  
  202.     SpeechDoneProcPtr = ProcPtr;  { PROCEDURE SpeechDone(parameter0: SpeechChannel; parameter1: LONGINT); }
  203.  
  204.     SpeechSyncProcPtr = ProcPtr;  { PROCEDURE SpeechSync(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType); }
  205.  
  206.     SpeechErrorProcPtr = ProcPtr;  { PROCEDURE SpeechError(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT); }
  207.  
  208.     SpeechPhonemeProcPtr = ProcPtr;  { PROCEDURE SpeechPhoneme(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER); }
  209.  
  210.     SpeechWordProcPtr = ProcPtr;  { PROCEDURE SpeechWord(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER); }
  211.  
  212.     SpeechTextDoneUPP = UniversalProcPtr;
  213.     SpeechDoneUPP = UniversalProcPtr;
  214.     SpeechSyncUPP = UniversalProcPtr;
  215.     SpeechErrorUPP = UniversalProcPtr;
  216.     SpeechPhonemeUPP = UniversalProcPtr;
  217.     SpeechWordUPP = UniversalProcPtr;
  218.  
  219. CONST
  220.     uppSpeechTextDoneProcInfo = $0000FFC0;
  221.     uppSpeechDoneProcInfo = $000003C0;
  222.     uppSpeechSyncProcInfo = $00000FC0;
  223.     uppSpeechErrorProcInfo = $00003BC0;
  224.     uppSpeechPhonemeProcInfo = $00000BC0;
  225.     uppSpeechWordProcInfo = $00002FC0;
  226.  
  227. FUNCTION NewSpeechTextDoneProc(userRoutine: SpeechTextDoneProcPtr): SpeechTextDoneUPP;
  228.     {$IFC NOT GENERATINGCFM }
  229.     INLINE $2E9F;
  230.     {$ENDC}
  231.  
  232. FUNCTION NewSpeechDoneProc(userRoutine: SpeechDoneProcPtr): SpeechDoneUPP;
  233.     {$IFC NOT GENERATINGCFM }
  234.     INLINE $2E9F;
  235.     {$ENDC}
  236.  
  237. FUNCTION NewSpeechSyncProc(userRoutine: SpeechSyncProcPtr): SpeechSyncUPP;
  238.     {$IFC NOT GENERATINGCFM }
  239.     INLINE $2E9F;
  240.     {$ENDC}
  241.  
  242. FUNCTION NewSpeechErrorProc(userRoutine: SpeechErrorProcPtr): SpeechErrorUPP;
  243.     {$IFC NOT GENERATINGCFM }
  244.     INLINE $2E9F;
  245.     {$ENDC}
  246.  
  247. FUNCTION NewSpeechPhonemeProc(userRoutine: SpeechPhonemeProcPtr): SpeechPhonemeUPP;
  248.     {$IFC NOT GENERATINGCFM }
  249.     INLINE $2E9F;
  250.     {$ENDC}
  251.  
  252. FUNCTION NewSpeechWordProc(userRoutine: SpeechWordProcPtr): SpeechWordUPP;
  253.     {$IFC NOT GENERATINGCFM }
  254.     INLINE $2E9F;
  255.     {$ENDC}
  256.  
  257. PROCEDURE CallSpeechTextDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT; userRoutine: SpeechTextDoneUPP);
  258.     {$IFC NOT GENERATINGCFM}
  259.     INLINE $205F, $4E90;
  260.     {$ENDC}
  261.  
  262. PROCEDURE CallSpeechDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; userRoutine: SpeechDoneUPP);
  263.     {$IFC NOT GENERATINGCFM}
  264.     INLINE $205F, $4E90;
  265.     {$ENDC}
  266.  
  267. PROCEDURE CallSpeechSyncProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType; userRoutine: SpeechSyncUPP);
  268.     {$IFC NOT GENERATINGCFM}
  269.     INLINE $205F, $4E90;
  270.     {$ENDC}
  271.  
  272. PROCEDURE CallSpeechErrorProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT; userRoutine: SpeechErrorUPP);
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $205F, $4E90;
  275.     {$ENDC}
  276.  
  277. PROCEDURE CallSpeechPhonemeProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER; userRoutine: SpeechPhonemeUPP);
  278.     {$IFC NOT GENERATINGCFM}
  279.     INLINE $205F, $4E90;
  280.     {$ENDC}
  281.  
  282. PROCEDURE CallSpeechWordProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER; userRoutine: SpeechWordUPP);
  283.     {$IFC NOT GENERATINGCFM}
  284.     INLINE $205F, $4E90;
  285.     {$ENDC}
  286. FUNCTION SpeechManagerVersion: NumVersion;
  287.     {$IFC NOT GENERATINGCFM}
  288.     INLINE $203C, $0000, $000C, $A800;
  289.     {$ENDC}
  290. FUNCTION MakeVoiceSpec(creator: OSType; id: OSType; VAR voice: VoiceSpec): OSErr;
  291.     {$IFC NOT GENERATINGCFM}
  292.     INLINE $203C, $0604, $000C, $A800;
  293.     {$ENDC}
  294. FUNCTION CountVoices(VAR numVoices: INTEGER): OSErr;
  295.     {$IFC NOT GENERATINGCFM}
  296.     INLINE $203C, $0108, $000C, $A800;
  297.     {$ENDC}
  298. FUNCTION GetIndVoice(index: INTEGER; VAR voice: VoiceSpec): OSErr;
  299.     {$IFC NOT GENERATINGCFM}
  300.     INLINE $203C, $030C, $000C, $A800;
  301.     {$ENDC}
  302. FUNCTION GetVoiceDescription(VAR voice: VoiceSpec; VAR info: VoiceDescription; infoLength: LONGINT): OSErr;
  303.     {$IFC NOT GENERATINGCFM}
  304.     INLINE $203C, $0610, $000C, $A800;
  305.     {$ENDC}
  306. FUNCTION GetVoiceInfo(VAR voice: VoiceSpec; selector: OSType; voiceInfo: UNIV Ptr): OSErr;
  307.     {$IFC NOT GENERATINGCFM}
  308.     INLINE $203C, $0614, $000C, $A800;
  309.     {$ENDC}
  310. FUNCTION NewSpeechChannel(VAR voice: VoiceSpec; VAR chan: SpeechChannel): OSErr;
  311.     {$IFC NOT GENERATINGCFM}
  312.     INLINE $203C, $0418, $000C, $A800;
  313.     {$ENDC}
  314. FUNCTION DisposeSpeechChannel(chan: SpeechChannel): OSErr;
  315.     {$IFC NOT GENERATINGCFM}
  316.     INLINE $203C, $021C, $000C, $A800;
  317.     {$ENDC}
  318. FUNCTION SpeakString(s: StringPtr): OSErr;
  319.     {$IFC NOT GENERATINGCFM}
  320.     INLINE $203C, $0220, $000C, $A800;
  321.     {$ENDC}
  322. FUNCTION SpeakText(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT): OSErr;
  323.     {$IFC NOT GENERATINGCFM}
  324.     INLINE $203C, $0624, $000C, $A800;
  325.     {$ENDC}
  326. FUNCTION SpeakBuffer(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; controlFlags: LONGINT): OSErr;
  327.     {$IFC NOT GENERATINGCFM}
  328.     INLINE $203C, $0828, $000C, $A800;
  329.     {$ENDC}
  330. FUNCTION StopSpeech(chan: SpeechChannel): OSErr;
  331.     {$IFC NOT GENERATINGCFM}
  332.     INLINE $203C, $022C, $000C, $A800;
  333.     {$ENDC}
  334. FUNCTION StopSpeechAt(chan: SpeechChannel; whereToStop: LONGINT): OSErr;
  335.     {$IFC NOT GENERATINGCFM}
  336.     INLINE $203C, $0430, $000C, $A800;
  337.     {$ENDC}
  338. FUNCTION PauseSpeechAt(chan: SpeechChannel; whereToPause: LONGINT): OSErr;
  339.     {$IFC NOT GENERATINGCFM}
  340.     INLINE $203C, $0434, $000C, $A800;
  341.     {$ENDC}
  342. FUNCTION ContinueSpeech(chan: SpeechChannel): OSErr;
  343.     {$IFC NOT GENERATINGCFM}
  344.     INLINE $203C, $0238, $000C, $A800;
  345.     {$ENDC}
  346. FUNCTION SpeechBusy: INTEGER;
  347.     {$IFC NOT GENERATINGCFM}
  348.     INLINE $203C, $003C, $000C, $A800;
  349.     {$ENDC}
  350. FUNCTION SpeechBusySystemWide: INTEGER;
  351.     {$IFC NOT GENERATINGCFM}
  352.     INLINE $203C, $0040, $000C, $A800;
  353.     {$ENDC}
  354. FUNCTION SetSpeechRate(chan: SpeechChannel; rate: Fixed): OSErr;
  355.     {$IFC NOT GENERATINGCFM}
  356.     INLINE $203C, $0444, $000C, $A800;
  357.     {$ENDC}
  358. FUNCTION GetSpeechRate(chan: SpeechChannel; VAR rate: Fixed): OSErr;
  359.     {$IFC NOT GENERATINGCFM}
  360.     INLINE $203C, $0448, $000C, $A800;
  361.     {$ENDC}
  362. FUNCTION SetSpeechPitch(chan: SpeechChannel; pitch: Fixed): OSErr;
  363.     {$IFC NOT GENERATINGCFM}
  364.     INLINE $203C, $044C, $000C, $A800;
  365.     {$ENDC}
  366. FUNCTION GetSpeechPitch(chan: SpeechChannel; VAR pitch: Fixed): OSErr;
  367.     {$IFC NOT GENERATINGCFM}
  368.     INLINE $203C, $0450, $000C, $A800;
  369.     {$ENDC}
  370. FUNCTION SetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  371.     {$IFC NOT GENERATINGCFM}
  372.     INLINE $203C, $0654, $000C, $A800;
  373.     {$ENDC}
  374. FUNCTION GetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  375.     {$IFC NOT GENERATINGCFM}
  376.     INLINE $203C, $0658, $000C, $A800;
  377.     {$ENDC}
  378. FUNCTION TextToPhonemes(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; phonemeBuf: Handle; VAR phonemeBytes: LONGINT): OSErr;
  379.     {$IFC NOT GENERATINGCFM}
  380.     INLINE $203C, $0A5C, $000C, $A800;
  381.     {$ENDC}
  382. FUNCTION UseDictionary(chan: SpeechChannel; dictionary: Handle): OSErr;
  383.     {$IFC NOT GENERATINGCFM}
  384.     INLINE $203C, $0460, $000C, $A800;
  385.     {$ENDC}
  386. {$ENDC}
  387. {$ALIGN RESET}
  388. {$POP}
  389.  
  390. {$SETC UsingIncludes := SpeechIncludes}
  391.  
  392. {$ENDC} {__SPEECH__}
  393.  
  394. {$IFC NOT UsingIncludes}
  395.  END.
  396. {$ENDC}
  397.